The present invention, in some embodiments thereof, relates to a publish-subscribe service and, more particularly, but not exclusively, to assisting shared subscriptions clients to improve their distribution over a plurality of servers of a cluster providing a publish-subscribe service.
Publish-subscribe is a popular communication paradigm allowing users that produce and consume messages to interact with each other in a decoupled fashion. A typical implementation of this paradigm is topic-based publish-subscribe in which the messages are classified according to topics. In the topic-based publish-subscribe, message producers, also called “publishers” (publishing clients), publish their messages on logical channels called “topics”. Message consumers, also called “subscribers” (subscribing clients), subscribe to the topics that are of interest to them, and receive messages published on those topics of choice. Publishers and subscribers are decoupled because they don't need to know the network address of one another, only the topic identifier on top of which they communicate.
Due to its simple interface and inherent scalability, publish-subscribe is commonly used to support many-to-many communication in a wide variety of popular Internet applications, such as, for example, enterprise application integration, stock-market monitoring engines, RSS feeds, on-line gaming and/or the like. There are numerous implementations of the publish-subscribe middleware in both industry, for example, IBM® WebSphere Message Queue (IBMWMQ), IBM® MessageSight(IBMMS), RabitMQ, Apache Kafka and academia, for example, Corona.
One publish-subscribe protocol in wide use may be, for example, the Message Queue Telemetry Transport (MQTT) used mainly for the “Internet of Things” (IoT) and Machine-to-Machine (M2M) applications. Another popular publish-subscribe protocol is the Java Messaging Service (JMS) which is used mainly for enterprise application integration and/or the like.